The present invention relates in general to the field of digital media and, more particularly, to a media server system and method having improved asset types for playback of digital media.
Digital media files are increasingly used to record a variety of media assets for playback on computer systems. Digital media assets are also delivered across networks in a real-time stream. In both cases, digital media data is typically organized with a header followed by a large number of data packets. The header and data packet components are generally separated by a packet start code. A decoder or player is a software or hardware component, such as a software application or hardware card, that receives the digital media data in this digital packet format and renders it for playback such as a displayable image, playable audio or a combination of the two. The header information is important in order to properly initialize the decoder for the media format. If the header information gets garbled or dropped, nothing will get played correctly by the decoder.
One distribution method used for digital media files is a media server which can hold a large repository of media files. The media files can be streamed as digital packets across a network connection such as a local area network, wide area network or the Internet, to client systems for playback. Typically, the media server divides the media files into data packets which are then delivered to the client system across the network connection. In order to provide continuous playback of digital media data, these packets need to arrive within a certain time range. Packets received after or before this time range typically can not be used to display or play the digital media data.
In general, reliable network protocols such as TCP (Transport Control Protocol) are not appropriate to guarantee timely delivery of packets. Consequently, UDP (Unreliable Datagram Protocol) is typically used as a delivery mechanism for the packets. Using UDP, however, packets may be lost and garbled (out of sequence) before they reach the client system destination. Conventional media servers address problems with packet delivery by using feedback information communicated by the client system during playback. However, such schemes are inefficient and can slow down the server when a number of client systems are actively playing media files.
Another means for addressing problems with packet delivery during playback is implemented by the MEDIABASE 1.0 media server available from SILICON GRAPHICS. This media server used a header injection technique where header information could be provided to a decoder separately from the streamed packets to allow decoder initialization to be more robust. In MEDIABASE 1.0, playback was supported only for simple assets consisting of single files that contain the video and/or audio that is to be delivered. Examples of simple assets include an MPEG-1 system stream that contains audio and video, an MPEG-1 elementary video stream (video only), an MPEG-1 elementary audio stream (audio only), and an MPEG-2 transport stream (video and audio combined). The header injection involved associating metadata with each simple asset that included the headers that were needed to play the given asset type.
In accordance with the present invention, a media server system and method having improved asset types are disclosed for playback of digital media and provide advantages over conventional digital media server systems.
According to one aspect of the present invention, for playback, a media server system and method are disclosed for playback of digital media. For playback, header information associated with a complex asset is received. The header information comprises information for initializing a decoder for playback of the complex asset. Artificial headers for the complex asset are then created using the header information. A digital packet stream for the complex asset is received and passed decoder for playback. During playback, artificial headers are injected as appropriate for initializing the decoder for playback of the complex asset. In one implementation, the complex asset can be a clip, a parallel, a sequential or a composite asset.
According to another aspect of the present invention, a method is provided for playback of a composite asset. The composite asset has a plurality of assets associated with it. Each of the associated assets encodes a common media title in a different format. For playback, a name of the composite asset is received, and format information for the composite asset is obtained. The formats that exceed an available bitrate on the client system are then discarded. From remaining formats, a format/player combination is selected that has a highest priority. Then, the selected player is launched to playback the associated asset that encodes the common media title in the selected format.
A technical advantage of the present invention is the use of extracted header information to create artificial headers that can be injected as appropriate for playback of complex assets, including clip, parallel, sequential and composite assets.
The extracted header information and artificial header allows the client side flexibility in handling initialization of the decoder for playback of these complex asset types. The client side media control application can work with a variety of decoders on many platforms and can provide high quality, robust playback with a rich feature set. Features can include rewind and fast forward functions and the handling of services such as live cast, web cast, delay TV and video bookmarks.
Another technical advantage of the present invention is the provision of a composite asset type that allows one asset name to refer to multiple encodings of the same asset. Also, the client side media control application is enabled to select the appropriate format and applications for playback based upon the specific characteristics of the client system.
Other technical advantages should be readily apparent to one skilled in the art from the figures, description, and claims.